# frozen_string_literal: true

# kind of odd, but we need it, we also need to nuke usage of User from inside migrations
#  very poor form
user = User.find_by("id <> #{Discourse::SYSTEM_USER_ID} and username_lower = 'system'")
if user
  user.username = UserNameSuggester.suggest("system")
  user.save
end

UserEmail.seed do |ue|
  ue.id = -1
  ue.email = "no_email"
  ue.primary = true
  ue.user_id = Discourse::SYSTEM_USER_ID
end

User.seed do |u|
  u.id = Discourse::SYSTEM_USER_ID
  u.name = "system"
  u.username = "system"
  u.username_lower = "system"
  u.password = SecureRandom.hex
  u.active = true
  u.admin = true
  u.moderator = true
  u.approved = true
  u.trust_level = TrustLevel[4]
end

UserOption.where(user_id: Discourse::SYSTEM_USER_ID).update_all(
  email_messages_level: UserOption.email_level_types[:never],
  email_level: UserOption.email_level_types[:never],
)

Group.user_trust_level_change!(Discourse::SYSTEM_USER_ID, TrustLevel[4])

# User for the smoke tests
if ENV["SMOKE"] == "1"
  UserEmail.seed do |ue|
    ue.id = 0
    ue.email = "smoke_user@discourse.org"
    ue.primary = true
    ue.user_id = 0
  end

  smoke_user =
    User
      .seed do |u|
        u.id = 0
        u.name = "smoke_user"
        u.username = "smoke_user"
        u.username_lower = "smoke_user"
        u.password = "P4ssw0rd"
        u.active = true
        u.approved = true
        u.approved_at = Time.now
        u.trust_level = TrustLevel[3]
      end
      .first

  UserOption.where(user_id: smoke_user.id).update_all(
    email_digests: false,
    email_messages_level: UserOption.email_level_types[:never],
    email_level: UserOption.email_level_types[:never],
  )

  EmailToken.where(user_id: smoke_user.id).update_all(confirmed: true)
end
